/**********************************************************************
* Filename: AirNova_DatabaseDemo.java
* Created: 2013/04/28
* @author Fernando Brito e Abreu
**********************************************************************/
package org.quasar.airNova.presentationLayer;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import org.quasar.airNova.businessLayer.*;
import org.quasar.airNova.persistenceLayer.Database;

public abstract class AirNova_DatabaseDemo
{
	/***********************************************************
	* @param args
	***********************************************************/
	public static void main(String[] args)
	{
		dummy();
	}

	private static void dummy()
	{
		Database.open("database", "AirNova", "db4o");
		Database.cleanUp();
		
		System.out.println("------------------------------------------------------");
		Pais portugal = new Pais(0, "Português", "Euro", "Portugal", null);
		
		Cidade lisboa = new Cidade();
		lisboa.setNome("Lisboa");
		lisboa.setPais(portugal);
		
		Cidade porto = new Cidade();
		porto.setNome("Porto");
		porto.setPais(portugal);
		
		Database.insert(portugal, lisboa, porto);
		
		System.out.println("Portugal>" + portugal);
		System.out.println("Cidades de Portugal>" + portugal.cidades());
				
		Individual ramon = new Individual();
		ramon.setNome("Ramon Bolivar");
				
		Individual julio = new Individual();	
		julio.setNome("Julio Iglesias");
		
		Pais espanha = new Pais(1, "castelhano", "Euro", "Espanha",  new HashSet<Individual>(Arrays.asList(ramon, julio)));
				
		Cidade madrid = new Cidade();
		madrid.setNome("Madrid");

		Cidade olivenza = new Cidade();
		olivenza.setNome("Olivenza");

		Database.insert(ramon, julio, espanha, madrid, olivenza);

		System.out.println("Pais de Olivenza>" + olivenza.pais());
		olivenza.setPais(espanha);
		System.out.println("Pais de Olivenza>" + olivenza.pais());

		System.out.println("Espanha>" + espanha);
		
		System.out.println("------------------------------------------------------");
		
		espanha.addNacionais(new Individual(123, "Palacio Almodovar, Calle Colon, 33, 23456 Madrid, Espa�a", 898798792, "Letizia Gonzalez", "letizia@palaciorey.es", 56565656, Sexo.feminino, 987654321));
		System.out.println("Nacionais de Espanha:");
		for (Individual quien: espanha.nacionais())
			System.out.println(quien);
		
		System.out.println("------------------------------------------------------");
		
		for (Cidade c: Cidade.allInstances())
			System.out.println(c);
		
		System.out.println("------------------------------------------------------");
		
		Database.delete(madrid);
		for (Cidade c: Cidade.allInstances())
			System.out.println(c);
		
		System.out.println("------------------------------------------------------");
		
		olivenza.setPais(portugal);
		olivenza.setNome("Oliven�a");
		System.out.println(olivenza);
		
		Database.update(olivenza);
		
		System.out.println("------------------------------------------------------");

		System.out.println("Oliven�a � de novo uma cidade de " + olivenza.pais().nome());
		
		for (Cidade c: Cidade.allInstances())
			System.out.println(c);
		
		Database.close();
	}
}